Piping Serverでディレクトリをgpg暗号化転送する時にパスワードをコマンドライン引数で指定する
#Piping_Server #gpgコマンド #暗号化 #共通鍵暗号
やりたいこと
ディレクトリを暗号化して転送したい。
パスワードを手入力せずにコマンドライン引数で渡したい。
gpgコマンドのパスフレーズの手入力が不安定な環境があったりする時があった。環境変数GPG_TTY=$(tty)してもなぜかうまく行かない環境があった。
やりかた
パスフレーズを環境変数$PASSに入れておく。
code:bash
PASS=安全なパスフレーズ
安全に自動生成するNipp: パスワード生成
ブラウザで簡単に生成できるのと、リロードすれば再生成される。
inputに数値を入れるとその長さになる。
送信者
今いるディレクトリを.tar.gzにして暗号化して送信している。
code:bash
tar -zvcf - . | gpg -c --batch --passphrase=$PASS | curl -T - https://ppng.io/mypath
受信者
復号してmy.tar.gzとして保存している。
code:bash
curl https://ppng.io/mypath | gpg -d --batch --passphrase=$PASS > my.tar.gz
参考: gpgコマンドでパスフレーズをコマンドライン引数に渡して実行する方法
進捗確認について
送信者でtar vを指定しているのでどのファイルをいまアーカイブしているか分かる。
受信者側でもcurlコマンドが現在のスピードや何バイト受信したか表示されるので(環境依存かもしれない)、それも役に立つ。du -h my.tar.gzで容量増えているか確認するのも一つの手。
おまけ
受信者側でtar xを足すと、.tar.gzを解凍しながら受信もできる。.tar.gzに用はなくて、ディレクトリとして受け取りたいならこの方が効率がよくなる。
ブラウザでgpg互換性ある状態で暗号化したいならPiping UIが使える。
Piping UI: パスワードでのエンドツーエンド暗号化のファイル転送の使い方